﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CROSLAND.BL.BE;
using DECOR.DL.DALC.SAPC.Proxy;

namespace CROSLAND.DL.DALC.SAPC
{
    public class PartidaDALC : IPartidaDALC
    {
        
       public static PartidaDALC Instance() {
            if (_instance == null)
            {
                lock (typeof(PartidaDALC))
                {
                    if (_instance == null)
                    {
                        _instance = new PartidaDALC();
                    }
                }
            }
            return _instance;
        }

        private PartidaDALC() { }
        private static volatile PartidaDALC _instance = null;


        #region IPartidaDALC Members

        public List<PartidaBE> buscaPartAbiertas(string pCodCliente, string pOrgVtas, DateTime pFecha)
        {
            BSIDTable t_bsid = new BSIDTable();
            string fechaSAP = ParametroDALC.dateNetToSap(pFecha);

            PartidasProxy proxy = new PartidasProxy();
            proxy.Connection = DALC.getConnection;
            if (!proxy.Connection.IsOpen) { proxy.Connection.Open(); }
            proxy.Zweb_Busca_Partabiertas(fechaSAP, pOrgVtas, pCodCliente.PadLeft(10,'0'), ref t_bsid);
            SAP.Connector.SAPConnectionPool.ReturnConnection(proxy.Connection);
            proxy.Connection = null;

            PedidoDALC pObjPedidoDALC = PedidoDALC.Instance();
            List<InterlocutorBE> lstInter = new List<InterlocutorBE>();

            List<PartidaBE> lstPartidas = new List<PartidaBE>();
            PartidaBE objPart = null;
            foreach (BSID item in t_bsid)
            {
                objPart = new PartidaBE();

                objPart.NumDocumento = item.Belnr;
                objPart.CodCliente = item.Kunnr;
                objPart.NomCliente = item.Kontl.Trim();
                objPart.OrgVtas = item.Bukrs;
                objPart.FechaDoc = ParametroDALC.dateSapToNet(item.Bldat);

                objPart.Ejercicio = item.Gjahr;
                objPart.Moneda = item.Waers;
                objPart.CodReferencia = item.Xblnr;
                objPart.ClaseDoc = item.Blart;

                objPart.Importe = item.Wrbtr;
                objPart.ImporteMonLocal = item.Dmbtr;

                objPart.Texto = item.Sgtxt;
                objPart.CondPago = item.Zterm;
                objPart.NumFactura = item.Vbeln;

                objPart.DocComp = item.Augbl;
                objPart.FecComp = ParametroDALC.dateSapToNet(item.Augdt);

                lstPartidas.Add(objPart);
            }
            return lstPartidas;
        }

        #endregion
    }
}
